-- 优惠券的id【通过这个id来扣库存】
local voucherId = ARGV[1]
-- 用户的id，将这个存放到set集合里面，表示已经下单
local userId = ARGV[2]

-- 库存的key
local stockKey = "seckill:stock:" .. voucherId
-- 订单的key
local orderKey = "seckill:order:" .. voucherId

-- 1. 判断库存
if(tonumber(redis.call('get', stockKey)) <= 0 ) then
    -- 库存不足，返回1
    return 1
end
-- 2. 判断用户是否下过单
if(redis.call('sismember', orderKey, userId) == 1) then
    -- 已经下过单了，返回2
    return 2
end

-- 3. 减少库存
redis.call('incrby', stockKey, -1)
-- 4. 下单
redis.call('sadd', orderKey, userId)
-- 成功返回0
return 0

